from django.db import models
from django.contrib.auth.models import User
# Create your models here.

# 疾病暂时只有四个，直接用json文件存储代替数据库（并且是静态数据，不会变化）无需大量管理
# class Disease(models.Model):
#     name = models.CharField(max_length=100)
#     symptoms = models.TextField()
#     precautions = models.TextField()
#     treatment = models.TextField()

#     def __str__(self):
#         return self.name


class DiagnosisHistory(models.Model):
    user = models.ForeignKey(
        User,
        on_delete=models.CASCADE,
        related_name="diagnosis_histories",
        verbose_name="用户",
    )  # 关联用户，支持多条记录
    diagnosis_date = models.DateTimeField(
        auto_now_add=True, verbose_name="诊断日期"
    )  # 诊断日期，默认当前时间
    diagnosis_result = models.TextField(
        verbose_name="诊断结果"
    )  # 诊断结果，支持长文本（直接根据症状调用json结果）
    prediction_rates = models.JSONField(
        default=dict,
        verbose_name="预测率",
        help_text="以字典形式存储各疾病预测率，例如：{'diabetes': 0.1, 'hypertension': 0.2}",
    )  # 使用JSONField存储所有疾病预测率
    notes = models.TextField(
        blank=True, null=True, verbose_name="备注"
    )  # 备注，可选字段

    class Meta:  # Meta类用于定义一些Django模型类的行为特性，例如排序方式、数据库表名、人类可读的单数或复数名等。
        ordering = ["-diagnosis_date"]  # 按时间倒序排序
        verbose_name = "诊断历史"  # 后台显示的名称
        verbose_name_plural = "诊断历史"  # 后台显示的名称
        # db_table = "diagnosis_history" # 可以指定数据库表名，否则为app名_类名 disease_recognition_diagnosishistory

    def __str__(self):
        return f"用户名：{self.user.username} - 诊断日期：{self.diagnosis_date} - 诊断结果：{self.diagnosis_result} - 备注：{self.notes} - 预测率：{self.prediction_rates}"
